﻿using Microsoft.Xna.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GameProject
{
    /// <summary>
    /// Detta fungerar som en hjälpklass för kollisioner,
    /// då den underlättare vid kontroll av kollison mellan
    /// kuben och tiles.
    /// </summary>
    static class RectangleHelper
    {

        /// <summary>
        /// Ifall kuben är på ovandelen en tile.
        /// </summary>
        /// <param name="r1"></param>
        /// <param name="r2"></param>
        /// <returns></returns>
        public static bool TouchTopOf(this Rectangle r1, Rectangle r2)
        {
            return (r1.Bottom >= r2.Top - 2 &&
                   r1.Bottom <= r2.Top + (r2.Height / 2) &&
                   r1.Right >= r2.Left + r2.Width / 5 &&
                   r1.Left <= r2.Right - r2.Width / 5);
        }


        /// <summary>
        /// Ifall kuben är på underdelen av en tile.
        /// </summary>
        /// <param name="r1"></param>
        /// <param name="r2"></param>
        /// <returns></returns>
        public static bool TouchBottomOf(this Rectangle r1, Rectangle r2)
        {
            return (r1.Top <= r2.Bottom + (r2.Height / 8) &&
                    r1.Top >= r2.Bottom - 2 && 
                    r1.Right >= r2.Left + (r2.Width /5) &&
                    r1.Left <= r2.Right - (r2.Width /5));
        }

        /// <summary>
        /// Ifall kuben är på vänstersidan av en tile.
        /// </summary>
        /// <param name="r1"></param>
        /// <param name="r2"></param>
        /// <returns></returns>
        public static bool TouchLeftOf(this Rectangle r1, Rectangle r2)
        {
            return (r1.Right <= r2.Right &&
                    r1.Right >= r2.Left - 5 &&
                    r1.Top <= r2.Bottom - (r2.Width / 4) &&
                    r1.Bottom >= r2.Top + (r2.Width / 4));
        }


        /// <summary>
        /// Ifall kuben är på högersidan av en tile.
        /// </summary>
        /// <param name="r1"></param>
        /// <param name="r2"></param>
        /// <returns></returns>
        public static bool TouchRightOf(this Rectangle r1, Rectangle r2)
        {
            return(r1.Left >= r2.Left &&
                   r1.Left <= r2.Right + 5 &&
                   r1.Top <= r2.Bottom - (r2.Width / 4) &&
                   r1.Bottom >= r2.Top + (r2.Width / 4));
        }
    }
}
